package com.oop.ch08;

import com.oop.ch01.Common;
import com.oop.ch02.Cat;
import com.oop.ch02.Dog;

import java.util.InputMismatchException;
import java.util.Scanner;

public class PetTest {
	public static void main(String[] args) {
		String errorMsg="";//定义异常内容的消息
		try {
			Dog d1=new Dog("翠花", Common.SEX_WOMAN, 1, "吉娃娃", 3.3);
			Dog d2=new Dog("旺财", Common.SEX_MAN, 2, "哈士奇", 44.6);
			
			Cat c1=new Cat("豆豆", Common.SEX_MAN, 1, "波斯猫", 3.3);
			Cat c2=new Cat("打豆豆", Common.SEX_WOMAN, 1, "布偶猫", 4.3);
			
			Object[][] pets=new Object[2][2];
			//测试数据---狗狗 有两个
			pets[0][0]=d1;
			pets[0][1]=d2;
			//测试数据---小猫 有两个
			pets[1][0]=c1;
			pets[1][1]=c2;
			
			//**********************
			System.out.println("欢迎您来到宠物商店！");
			System.out.print("请选择您要领养的宠物类型(1.狗狗 2.小猫)");
			
			errorMsg="请输入领养宠物的类型：数字1或者数字2";
			//在这里接受用户输入的值(会暂时中断程序的执行)
			Scanner input=new Scanner(System.in);
			int type=input.nextInt();//是获取用户输入的选择宠物类型数字
			if(!(type==1 || type==2)){//不合法的数字输入
				// System.out.println(errorMsg);
				// return;
				throw new Exception(errorMsg);
			}
			String typeName="";//记录选择的数字对应的宠物类型 中文名字(狗狗  小猫)
			String types="(";//记录要领养宠物的品种
			if(type==1){
				// types="(1.吉娃娃 2.哈士奇)";
				//pets[0].length 是 记录狗的品种的集合
				typeName="狗狗";
				for (int i = 0; i < pets[0].length; i++) {
					Dog dog=(Dog) pets[0][i];
					types=types+(i+1)+"."+dog.getType()+" ";
				}
			}else {
				typeName="小猫";
				for (int i = 0; i < pets[1].length; i++) {
					Cat cat=(Cat) pets[1][i];
					types=types+(i+1)+"."+cat.getType()+" ";
				}
			}
			types+="):";
			types="请选择"+typeName+"品种"+types;
			
			System.out.print(types);
			errorMsg="请输入要选择的宠物编号";
			input=new Scanner(System.in);
			int num=input.nextInt();//获取选择的宠物编号
			if(type==1){//狗狗
				Dog dog=(Dog) pets[0][num-1];
				dog.print();
			}else {//小猫
				Cat cat=(Cat) pets[1][num-1];
				cat.print();
			}
		}catch (InputMismatchException e){//输入不合法
			System.out.println(errorMsg);
		}catch (ArrayIndexOutOfBoundsException e){//数组索引越界
			System.out.println(errorMsg);
		}catch (Exception e){
			//e.printStackTrace();//打印程序的堆栈信息，帮助开发人员分析和调试错误，
			//这个是给用户的人性化提示
			if(errorMsg!=null){
				System.out.println(errorMsg);
			}else {
				System.out.println("由于访问量较大，请稍后再试！");
			}
		}finally {
			System.out.println("欢迎使用本程序");
		}
	}
	
	public static void demo1() {
		//把一个狗类 实例化 成一个具体的狗对象
		Dog d1=new Dog();
		d1.setName("旺财111");
		d1.setWeight(10.5);
		d1.setAge(-2);
		d1.setSex(Common.SEX_MAN);
		d1.setType("藏獒");
		d1.print();
		
		System.out.println(d1.getName());
		
		
		// com.oop.ch01.Dog d2=new Dog("翠花", Common.SEX_WOMAN, 1, "吉娃娃", 3.3);
		// d2.print();
	}
}
